Generally described, computing devices utilize a communication network, or a series of communication networks, to exchange data. Companies and organizations operate computer networks that interconnect a number of computing devices to support operations or provide services to third parties. Data communicated between the computing networks originates from a network interface of a transmitting computing device and travels over the computing network. The data is then received at a network interface corresponding to a destination computing device. To facilitate the transmission of the data through the computing network, the data can be broken down into a series of packets. The serialized packets are then received and re-transmitted by switches and routers until the set of packets (e.g., the data) is received at the appropriate destination.
In a simple embodiment, a computing device, such as a server computing device, may have a single network interface, typically implemented as a network interface card (“NIC”) that receives and transmits data. In more complex embodiments, a server may have multiple network interfaces in order to, for example, increase available bandwidth by adding additional network cables on which to transmit and receive network communications. For example, a server may support multiple NICs. In another example, a server may have a single NIC that supports multiple network interfaces, which is generally referred to as a multi-interface NIC. One example of a multi-interface NIC is a single root I/O virtualization (“SR-IOV”) NIC. SR-IOV NICs typically include a single full-featured hardware network interface, known as a physical function, and several lightweight network interfaces, known as virtual functions. Together, the physical function and virtual functions are presented as separate network interfaces, both to other computing devices and to the operating system(s) executing on the computing device with the SR-IOV NIC.